/**
 * 2.基于以下代码完成练习
 */
const fp = require("lodash/fp");

const cars = [
  {
    name: "Ferrari FF",
    horsepower: 660,
    dollar_value: 700000,
    in_stock: true
  },
  {
    name: "Spyker C12 Zagato",
    horsepower: 650,
    dollar_value: 648000,
    in_stock: false
  },
  {
    name: "Jaguar XKR-S",
    horsepower: 550,
    dollar_value: 132000,
    in_stock: false
  },
  {
    name: "Audi R8",
    horsepower: 525,
    dollar_value: 114200,
    in_stock: false
  },
  {
    name: "Aston Martin One-77",
    horsepower: 750,
    dollar_value: 1850000,
    in_stock: true
  },
  {
    name: "Pagani Huayra",
    horsepower: 700,
    dollar_value: 1300000,
    in_stock: false
  }
];

//1.获取最后一条数据的in_stock属性
let lastInStock = fp.flowRight(fp.prop("in_stock"), fp.last);
console.log(lastInStock(cars));




//2.获取第一个car的name
let fisrtCarName = fp.flowRight(fp.prop("name"), fp.first);
console.log(fisrtCarName(cars));




//3.使用帮助函数重构  使用函数组合的方式实现
let _average = function(xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length;
};

let averageDollarValue = fp.flowRight(
  _average,
  fp.map(fp.prop("dollar_value"))
);
console.log(averageDollarValue(cars));



//4.将name属性变为小写并将空格替换成_

let _underscore = fp.replace(/\W+/g, "_");

let sanitizeNames = fp.flowRight(fp.map(fp.flowRight(_underscore, fp.toLower,fp.prop("name"))));

console.log(sanitizeNames(cars));


